//
// Created by harrytsz on 2021/1/3.
//

#ifndef DATASTRUCTURES_LINEARLIST_H
#define DATASTRUCTURES_LINEARLIST_H

template <class T>
class linearList {
    public:
        virtual ~linearList() {};

        // 当且仅当线性表为空，返回 true;
        virtual bool empty() const = 0;

        // 返回线性表的元素个数
        virtual int size() const = 0;

        // 返回索引为 theIndex 的元素
        virtual T& get(int theIndex) const = 0;

        // 返回元素第一次出现时的索引
        virtual int indexOf(const T& theElement) const = 0;

        // 删除索引为 theIndex 处的元素
        virtual void erase(int theIndex) = 0;

        // 把 theElement 元素插入到索引 theIndex 位置处
        virtual void insert(int theIndex, const T& theElement) = 0;

        // 把线性表插入输出流 out
        virtual void output(ostream& out) const = 0;
};


#endif //DATASTRUCTURES_LINEARLIST_H
